class Solution {
    public static String addBinary(String a, String b) {
        // 遍历字符串模拟列竖式运算
        int an = a.length(), bn = b.length();
        int ai = an-1, bi = bn-1, t = 0;
        StringBuilder sb = new StringBuilder();
        while (ai >= 0 || bi >= 0) {
            // 先计算两者相同位相加的结果
            if (ai >= 0) {
                // t += a.charAt(ai); // 这里拿到的是字符1，而不是数字1
                t += a.charAt(ai) - '0';
            }
            if (bi >= 0) {
                // t += b.charAt(bi); // 这里拿到的是字符1，而不是数字1
                t += b.charAt(bi) - '0';
            }
            sb.append(t % 2);
            t /= 2;
            ai--;
            bi--;
        }
        // 可能最终的进位并不为0
        if (t != 0) {
            sb.append(t % 2);
        }
        return sb.reverse().toString();
    }

    public static void main(String[] args) {
        addBinary("1010","1011");
    }
}